// 整数
export const integerReg = /^\d{1,}$/;

// 数字或浮点数
export const numberReg = /^\d+$|^\d+[.]?\d+$/;

// 数字仅包含两位小数
export const limitDecimalReg = /^(([1-9]{1}\d*)|(0{1}))(\.\d{1,2})?$/;

// 数字或字母
export const numberAndLettersReg = /^[A-Za-z0-9]$/;

// 6-12位数字或字母密码
export const sixToTwelveNumberAndLettersReg = /^[A-Za-z0-9]{6,12}$/;

// 手机号
export const telReg = /^(?:(?:\+|00)86)?1\d{10}$/;

// 电子邮箱
export const emailReg =
  /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;

// 基金代码
export const fundCodeReg = /^\d{6}$/;

export const indexCodeReg = /^\d{6}\.\w{2}$/;

export const validateEmpty = (value, message) => {
  if (Array.isArray(value)) {
    for (let i = 0; i < value.length; i++) {
      if (!value[i] && value[i] !== 0) {
        throw new Error(message || ' ');
      }
    }
  } else if (!value && value !== 0) {
    throw new Error(message || ' ');
  }
};

export const validateNumber = (value, message) => {
  if (Array.isArray(value)) {
    for (let i = 0; i < value.length; i++) {
      if (!numberReg.test(value[i])) {
        throw new Error(message || '请输入数字');
      }
    }
  } else if (!numberReg.test(value)) {
    throw new Error(message || '请输入数字');
  }
};

export const validateInteger = (value, message) => {
  if (Array.isArray(value)) {
    for (let i = 0; i < value.length; i++) {
      if (!integerReg.test(value[i])) {
        throw new Error(message || '请输入大于或等于0的整数');
      }
    }
  } else if (!integerReg.test(value)) {
    throw new Error(message || '请输入大于或等于0的整数');
  }
};

export const validateLimitDecimal = (value, message) => {
  if (Array.isArray(value)) {
    for (let i = 0; i < value.length; i++) {
      if (!limitDecimalReg.test(value[i])) {
        throw new Error(message || '最多为两位小数');
      }
    }
  } else if (!limitDecimalReg.test(value)) {
    throw new Error(message || '最多为两位小数');
  }
};

export const validateNumberAndLetters = (value, message) => {
  if (Array.isArray(value)) {
    for (let i = 0; i < value.length; i++) {
      if (!numberAndLettersReg.test(value[i])) {
        throw new Error(message || '只能输入数字和字母');
      }
    }
  } else if (!numberAndLettersReg.test(value)) {
    throw new Error(message || '只能输入数字和字母');
  }
};

export const validateSixToTwelveNumberAndLetters = (value, message) => {
  if (Array.isArray(value)) {
    for (let i = 0; i < value.length; i++) {
      if (!sixToTwelveNumberAndLettersReg.test(value[i])) {
        throw new Error(message || '只能输入数字和字母');
      }
    }
  } else if (!sixToTwelveNumberAndLettersReg.test(value)) {
    throw new Error(message || '只能输入数字和字母');
  }
};

export const validateTel = (value, message) => {
  if (Array.isArray(value)) {
    for (let i = 0; i < value.length; i++) {
      if (!telReg.test(value[i])) {
        throw new Error(message || '请输入正确的手机号码');
      }
    }
  } else if (!telReg.test(value)) {
    throw new Error(message || '请输入正确的手机号码');
  }
};

export const validateEmail = (value, message) => {
  if (Array.isArray(value)) {
    for (let i = 0; i < value.length; i++) {
      if (!emailReg.test(value[i])) {
        throw new Error(message || '请输入正确的电子邮箱');
      }
    }
  } else if (!emailReg.test(value)) {
    throw new Error(message || '请输入正确的电子邮箱');
  }
};
